package com.datasure.domain.entity;

import com.datasure.domain.entity.base.Entity;
import com.datasure.types.IntegerId;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Data;
import lombok.Setter;

import java.util.Date;

/**
 * @author zhangxiaolong
 * @ClassName DiskClone.java
 * @Description TODO
 * @createTime 2022年01月14日 18:40:00
 */
@Builder
@Data
@Setter(value = AccessLevel.PRIVATE)
public class DiskClone implements Entity<IntegerId> {
    @Override
    public IntegerId getId() {
        return diskcloneId;
    }

    private IntegerId diskcloneId;

    private IntegerId deviceId;

    private String diskcloneUuid;

    private Integer diskcloneIsOnline;

    private Integer diskcloneState;

    private Integer diskcloneWorkState;

    private String diskcloneWorkDesc;

    private String diskcloneSystemDesc;

    private Integer diskcloneSynchrEnable;

    private Integer diskcloneSynchrIntervalType;

    private Integer diskcloneSynchrIntervalValue;

    private Integer diskcloneKeepfullbackupEnable;

    private Integer diskcloneKeepfullbackupType;

    private Integer diskcloneKeepfullbackupNum;

    private Integer diskcloneKeepsnapEnable;

    private Integer diskcloneKeepsnapType;

    private Integer diskcloneKeepsnapNum;

    private Integer diskcloneSnapEnable;

    private Integer diskcloneSnapIntervalType;

    private Integer diskcloneSnapIntervalValue;

    private Integer diskcloneSnapIncreOldSnap;

    private Integer diskcloneTargetType;

    private String diskcloneTargetPath;

    private String diskcloneStoragePath;

    private Date diskcloneCreateTime;

    private Integer isParticlesData;

    private Integer checkDiskState;

    private Integer enableLimitedBackupSpeed;

    private Integer limitedBackupSpeedKb;

    private Integer enableLimitedBackupSpeedTask;

    private Integer limitedBackupSpeedKbTask;

    private String limitedBackupTime;

    private String snapTimeRange;

    private String remark;

    private Integer enableLimitedBackupTime;

    private Integer isNew;

    private Date diskcloneUpdateTime;

    private Integer enableLimitedSnapTime;

    private String limitedSnapTime;

    private Integer diskcloneBackupModel;

    private Integer byenablelanfree;

    private Long diskcloneTotalData;

    private String particlesDataPartition;

    /**
     * 全属性构造方法，可以添加验证
     * @param diskcloneId
     * @param deviceId
     * @param diskcloneUuid
     * @param diskcloneIsOnline
     * @param diskcloneState
     * @param diskcloneWorkState
     * @param diskcloneWorkDesc
     * @param diskcloneSystemDesc
     * @param diskcloneSynchrEnable
     * @param diskcloneSynchrIntervalType
     * @param diskcloneSynchrIntervalValue
     * @param diskcloneKeepfullbackupEnable
     * @param diskcloneKeepfullbackupType
     * @param diskcloneKeepfullbackupNum
     * @param diskcloneKeepsnapEnable
     * @param diskcloneKeepsnapType
     * @param diskcloneKeepsnapNum
     * @param diskcloneSnapEnable
     * @param diskcloneSnapIntervalType
     * @param diskcloneSnapIntervalValue
     * @param diskcloneSnapIncreOldSnap
     * @param diskcloneTargetType
     * @param diskcloneTargetPath
     * @param diskcloneStoragePath
     * @param diskcloneCreateTime
     * @param isParticlesData
     * @param checkDiskState
     * @param enableLimitedBackupSpeed
     * @param limitedBackupSpeedKb
     * @param enableLimitedBackupSpeedTask
     * @param limitedBackupSpeedKbTask
     * @param limitedBackupTime
     * @param snapTimeRange
     * @param remark
     * @param enableLimitedBackupTime
     * @param isNew
     * @param diskcloneUpdateTime
     * @param enableLimitedSnapTime
     * @param limitedSnapTime
     * @param diskcloneBackupModel
     * @param byenablelanfree
     * @param diskcloneTotalData
     * @param particlesDataPartition
     */
    public DiskClone(IntegerId diskcloneId, IntegerId deviceId, String diskcloneUuid, Integer diskcloneIsOnline, Integer diskcloneState, Integer diskcloneWorkState, String diskcloneWorkDesc, String diskcloneSystemDesc, Integer diskcloneSynchrEnable, Integer diskcloneSynchrIntervalType, Integer diskcloneSynchrIntervalValue, Integer diskcloneKeepfullbackupEnable, Integer diskcloneKeepfullbackupType, Integer diskcloneKeepfullbackupNum, Integer diskcloneKeepsnapEnable, Integer diskcloneKeepsnapType, Integer diskcloneKeepsnapNum, Integer diskcloneSnapEnable, Integer diskcloneSnapIntervalType, Integer diskcloneSnapIntervalValue, Integer diskcloneSnapIncreOldSnap, Integer diskcloneTargetType, String diskcloneTargetPath, String diskcloneStoragePath, Date diskcloneCreateTime, Integer isParticlesData, Integer checkDiskState, Integer enableLimitedBackupSpeed, Integer limitedBackupSpeedKb, Integer enableLimitedBackupSpeedTask, Integer limitedBackupSpeedKbTask, String limitedBackupTime, String snapTimeRange, String remark, Integer enableLimitedBackupTime, Integer isNew, Date diskcloneUpdateTime, Integer enableLimitedSnapTime, String limitedSnapTime, Integer diskcloneBackupModel, Integer byenablelanfree, Long diskcloneTotalData, String particlesDataPartition) {
        this.diskcloneId = diskcloneId;
        this.deviceId = deviceId;
        this.diskcloneUuid = diskcloneUuid;
        this.diskcloneIsOnline = diskcloneIsOnline;
        this.diskcloneState = diskcloneState;
        this.diskcloneWorkState = diskcloneWorkState;
        this.diskcloneWorkDesc = diskcloneWorkDesc;
        this.diskcloneSystemDesc = diskcloneSystemDesc;
        this.diskcloneSynchrEnable = diskcloneSynchrEnable;
        this.diskcloneSynchrIntervalType = diskcloneSynchrIntervalType;
        this.diskcloneSynchrIntervalValue = diskcloneSynchrIntervalValue;
        this.diskcloneKeepfullbackupEnable = diskcloneKeepfullbackupEnable;
        this.diskcloneKeepfullbackupType = diskcloneKeepfullbackupType;
        this.diskcloneKeepfullbackupNum = diskcloneKeepfullbackupNum;
        this.diskcloneKeepsnapEnable = diskcloneKeepsnapEnable;
        this.diskcloneKeepsnapType = diskcloneKeepsnapType;
        this.diskcloneKeepsnapNum = diskcloneKeepsnapNum;
        this.diskcloneSnapEnable = diskcloneSnapEnable;
        this.diskcloneSnapIntervalType = diskcloneSnapIntervalType;
        this.diskcloneSnapIntervalValue = diskcloneSnapIntervalValue;
        this.diskcloneSnapIncreOldSnap = diskcloneSnapIncreOldSnap;
        this.diskcloneTargetType = diskcloneTargetType;
        this.diskcloneTargetPath = diskcloneTargetPath;
        this.diskcloneStoragePath = diskcloneStoragePath;
        this.diskcloneCreateTime = diskcloneCreateTime;
        this.isParticlesData = isParticlesData;
        this.checkDiskState = checkDiskState;
        this.enableLimitedBackupSpeed = enableLimitedBackupSpeed;
        this.limitedBackupSpeedKb = limitedBackupSpeedKb;
        this.enableLimitedBackupSpeedTask = enableLimitedBackupSpeedTask;
        this.limitedBackupSpeedKbTask = limitedBackupSpeedKbTask;
        this.limitedBackupTime = limitedBackupTime;
        this.snapTimeRange = snapTimeRange;
        this.remark = remark;
        this.enableLimitedBackupTime = enableLimitedBackupTime;
        this.isNew = isNew;
        this.diskcloneUpdateTime = diskcloneUpdateTime;
        this.enableLimitedSnapTime = enableLimitedSnapTime;
        this.limitedSnapTime = limitedSnapTime;
        this.diskcloneBackupModel = diskcloneBackupModel;
        this.byenablelanfree = byenablelanfree;
        this.diskcloneTotalData = diskcloneTotalData;
        this.particlesDataPartition = particlesDataPartition;
    }


}
